What can you do for the previous problem if some fixed (small) percentage of the people are systematic liars, who lie every single time? (Assume that the percentage of liars is reasonably small.) And is that similar to handling some small percentage of errors in the answers, this time distributed evenly among all answers?.\\

If there is a small percentage of liars we can apply the same algorithm as in the previous exercise only this time we will first use a step for locating the liars (actually finding some truthful person to be used for asking).  Assuming that less than half of the people are liars\footnote{since we are told that the liars are a small percentage of the population}, we can detect them. We can use the following algorithm for doing so:

\begin{lstlisting}
find_truthful() {
	pick two random people A, B;
	yes = [];
	no = [];
	for (every person P) {
		response = ask P if A, B are on the same team;
		if (response = YES) {
			append(yes, P);	
		}
		else {
			append(no, P);
		}
	}
	if (|yes| > |no|) {
		return yes;
	}
	else {
		return no;
	}
}
\end{lstlisting}

Since the liars are systematic, we know that a person either always lies or tells the truth. Therefore, the presented algorithm returns the set of truthful people. After finding this set, we apply our solution of Question 4 and simply ask questions only to people from the truthful set.
\\\\
On the other hand, if there is a probability that any answer may be wrong (inverted), then the problem cannot be solved in a way that guarantees the correct answer.

Since every answer\footnote{by answer and question we mean a question if two people belong on the same team} may be incorrect, we need to verify the correctness of every question. However, the probability that an answer may be wrong is independent for each question, hence we cannot bound the consecutive number of inverted answers that may appear. Consequently, one cannot use an algorithm to verify if an answer was correct or not.